package systeme;

import org.apache.log4j.Logger;

import java.util.Collections;

import ihm.Deplacement;


/**
 * @author Ilyass
 * @version 1.0
 * @created 22-mars-2012 22:58:39
 */
public class Descendre extends Etat {
	/**
	 * Logger for this class
	 */
	private static final Logger logger = Logger.getLogger(Descendre.class);





	public Descendre(Ascenseur pAscenseur, Etat pEtatPrecedent) {
		super(pAscenseur, pEtatPrecedent);
		logger.info("Changement etat");
		pAscenseur.maj(pAscenseur.getEtageCourant(), DESCENTE);
	}

	@Override
	public void signalerChangementDEtage() {
		decrementerEtage();
		int etage = mAscenseur.getEtageCourant();
		Deplacement depDemande = mAscenseur.getDescentelist().get(0);
		boolean estProchainNiveau = depDemande.getEtage() == etage - 1
				&& (depDemande.getSens() == mAscenseur.getSens() || depDemande
						.estIndefini());
		if (estProchainNiveau) {
			mAscenseur.setEtat(new ArretImminent(mAscenseur, this));
		}

	}


	@Override
	protected void handle(Deplacement pDep) {
		logger.info("ajout liste descente");
		mAscenseur.getDescentelist().add(pDep);
		mAscenseur.getIhm().allumerBouton(pDep);
		Collections.sort(mAscenseur.getDescentelist(), new DepEtageSupCompartor());
	}

}